package com.ruoyi.common.core.web.domain;

import com.ruoyi.common.core.enums.AiReqStatusEnum;

import java.util.HashMap;
import java.util.List;

/**
 * @author ChenYF
 * @date 2025-09-01 15:25
 */
public class AiResult extends HashMap<String, Object> {
    /**
     * 返回码
     * 1000成功
     * 1001失败
     * 1002 参数校验失败
     * 1003非法请求
     * 1004未登录
     * 1005未经授权
     */
    public String respCode;
    /**
     * 请求时间：例如2018-07-08   12:12:12
     * 可以返回错误信息等
     */
    public String respMsg;
    /**
     * 用户数据
     */
    public List<AiResUserEntity> body;

    /**
     * 有分页需求 需要返回  没有分页需求 一次返回全量数据
     */
    public long totalPageNum;

    public AiResult() {
    }

    public AiResult(String respCode, String respMsg, List<AiResUserEntity> dataList) {
        super.put("respCode", respCode);
        super.put("respMsg", respMsg);
        super.put("body", dataList);
    }

    public AiResult(String respCode, String respMsg, List<AiResUserEntity> dataList, long totalPageNum) {
        super.put("respCode", respCode);
        super.put("respMsg", respMsg);
        super.put("body", dataList);
        super.put("totalPageNum", totalPageNum);
    }

    /**
     * 返回成功消息
     *
     * @return
     */
    public static AiResult success() {
        return new AiResult(AiReqStatusEnum.SUCCESS.getCode(), AiReqStatusEnum.SUCCESS.getMsg(), null);
    }


    /**
     * 返回成功消息
     *
     * @return
     */
    public static AiResult success(List<AiResUserEntity> data) {
        return new AiResult(AiReqStatusEnum.SUCCESS.getCode(), AiReqStatusEnum.SUCCESS.getMsg(), data);
    }

    /**
     * 返回成功消息
     *
     * @return
     */
    public static AiResult successPage(List<AiResUserEntity> data, long totalPageNum) {
        return new AiResult(AiReqStatusEnum.SUCCESS.getCode(), AiReqStatusEnum.SUCCESS.getMsg(), data, totalPageNum);
    }

    /**
     * 返回成功消息
     *
     * @param msg  返回内容
     * @param data 数据对象
     * @return 成功消息
     */
    public static AiResult success(String msg, List<AiResUserEntity> data) {
        return new AiResult(AiReqStatusEnum.SUCCESS.getCode(), msg, data);
    }


    /**
     * 返回失败消息
     *
     * @return
     */
    public static AiResult fail() {
        return new AiResult(AiReqStatusEnum.FAIL.getCode(), AiReqStatusEnum.FAIL.getMsg(), null);
    }


    /**
     * 返回失败消息
     *
     * @return
     */
    public static AiResult fail(String msg) {
        return new AiResult(AiReqStatusEnum.FAIL.getCode(), msg, null);
    }

    public static AiResult result(AiReqStatusEnum status) {
        return new AiResult(status.getCode(), status.getMsg(), null);
    }

    public static AiResult result(AiReqStatusEnum status, List<AiResUserEntity> data) {
        return new AiResult(status.getCode(), status.getMsg(), data);
    }
}
